home *** CD-ROM | disk | FTP | other *** search
- // File "test.cpp" -
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include "stdtypes.h"
- #include "stddebug.h"
-
- #include "datagram.h"
- #include "platform.h"
- #include "socket.h"
-
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
- /* Function Prototypes */
-
- PROTO SocketResult Lookup(SocketAddress &address);
- PROTO SocketResult Ping(SocketAddress &address, char *buffer);
- PROTO SocketResult RecordPacket(DatagramSocketRef socket, char *buffer,
- Byte8 *dataPtr, UInt32 dataLen, SocketAddressPtr address);
-
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
-
- void main() {
- char buffer[ARBITRARY_BUFFER_SIZE] = "";
- SocketAddress address;
-
- #if defined(PLATFORM_MAC)
- printf("Initializing Quickdraw\n");
- #endif
-
- Lookup(address);
- Ping(address, buffer);
- if (*buffer)
- printf("%s", buffer);
-
- #if defined(PLATFORM_MAC)
- printf("\n--- End of run ---\n");
- #endif
- }
-
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
-
- SocketResult Lookup(SocketAddress &address) {
- SocketResult error = eSocketNoError;
- Char8 hostname[ARBITRARY_BUFFER_SIZE] = "alumni";
-
- qThrowIfError(ResolveNetworkAddress(eSocketTypeUDP, hostname,
- &address), "Error resolving host name");
-
- /*
- address.type = eSocketTypeUDP;
- address.length = sizeof(address.buffer.tcpip);
- address.buffer.tcpip.type = AF_INET;
- address.buffer.tcpip.port = 13;
- address.buffer.tcpip.host = 0x8DD4540F;
- memset(address.buffer.tcpip.data, 0,sizeof(address.buffer.tcpip.data));
- */
- qThrowIfError(LookupNetworkAddress(&address, hostname),
- "Error looking up host name");
- printf("Sending ping to \"%s\"\n", hostname);
-
- address.buffer.tcpip.port = 13;
-
- /* CATCH */
- qCatch();
- return(error);
- }
-
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
-
- SocketResult Ping(SocketAddress &address, char *buffer) {
- SocketResult error = eSocketNoError;
- DatagramSocket socket;
- UInt32 i;
-
- qThrowIfNull(buffer, eSocketErrBadParam, kSocketErrBadParamStr);
- *buffer = 0;
-
- qThrowIfError(socket.SetReadProc((DatagramReadProc) RecordPacket,
- (void *) buffer), "Error installing read proc");
-
- qThrowIfError(socket.Create(address.type), "Error creating socket");
- qThrowIfError(socket.EnableLogging("logfile.txt", true),
- "Error enabling logfile");
- qThrowIfError(socket.Bind(0,0), "Error binding socket");
- qThrowIfError(socket.Write(0,0,&address), "Error writing to socket");
- for(i=0; !*buffer && i<10000; i++)
- qThrowIfError(socket.Tickle(), "Error tickling socket");
- qThrowIfError(socket.Unbind(), "Error unbinding socket");
- qThrowIfError(socket.DisableLogging(), "Error disabling logfile");
- qThrowIfError(socket.Dispose(), "Error disposing socket");
-
-
- /* CATCH */
- qCatch();
- return(error);
- }
-
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
- /* **** **** **** **** **** **** **** **** **** **** **** **** **** **** */
-
- SocketResult RecordPacket(DatagramSocketRef socket, char *buffer,
- Byte8 *dataPtr, UInt32 dataLen, SocketAddressPtr address) {
- memcpy(buffer, dataPtr, dataLen);
- buffer[dataLen] = 0;
- return(eSocketNoError);
- }
-
-